@page "/docio/employee-report"
@inject Microsoft.JSInterop.IJSRuntime JS
@using System.IO
@using Syncfusion.Blazor.Buttons
@using BlazorDemos.Data.FileFormats.DocIO
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment hostingEnvironment
@inherits SampleBaseComponent;

<SampleDescription>
    <p style="font-size:16px">This sample demonstrates how to generate an employee report using Mail merge functionality of Essential DocIO.</p>
</SampleDescription>
<ActionDescription>
    <p style="font-size:16px">With the mail merge support of DocIO, you can create a batch of personalized document or report very easily and fast.</p><p style="font-size:16px"><ul style="font-size:16px"><li>You can design templates in Microsoft Word and allow DocIO to populate documents with data from various data sources such as business objects, ADO.NET objects, arrays, XML, dynamic objects, and relational objects.</li><li> Simple text, numeric data and image from data sources can be populated in Word documents using mail merge.</li></ul></p>&nbsp;<p style="font-size:16px">More information about the Mail merge can be found in this <a href="https://help.syncfusion.com/file-formats/docio/working-with-mailmerge">documentation</a> section.</p>
</ActionDescription>

    <div class="control-section">
        <p style="font-size:16px">Click the button to view the generated Word document. Please note that Microsoft Word Viewer or Microsoft Word is required to view the resultant Word document.</p>
        <table>
            <tr>
                <td>
                    <h5 class="row" style="font-size:16px">Save As:</h5>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="DOC" Name="DOC" Value=@("DOC") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="DOCX" Name="DOCX" Value=@("DOCX") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="WordML" Name="WordML" Value=@("WordML") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <div class="button-section">
                        <div id="button-control">
                            <div class="row">
                                <div>
                                    <SfButton @onclick="ViewTemplate">View Template</SfButton>&nbsp;
                                    <SfButton @onclick="GenerateDocument">Generate Document</SfButton>
                                </div>
                            </div>
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </div>

<style>
    .control-section .row {
        margin: 10px 0;
    }
</style>

@code {
    MemoryStream documentStream;
    string documentType = "DOCX";

    /// <summary>
    /// Create and download the simple Word document
    /// </summary>
    public async Task GenerateDocument(MouseEventArgs args)
    {
        EmployeeReportService service = new EmployeeReportService(hostingEnvironment);
        documentStream = service.EmployeeReport(documentType, "Generate Document");
        if (documentType == "DOC")
            await JS.SaveAs("Sample.doc", documentStream.ToArray());
        else if (documentType == "WordML")
            await JS.SaveAs("Sample.xml", documentStream.ToArray());
        else
            await JS.SaveAs("Sample.docx", documentStream.ToArray());
    }
    /// <summary>
    /// Create and download the template Word document
    /// </summary>
    public async Task ViewTemplate(MouseEventArgs args)
    {
        EmployeeReportService service = new EmployeeReportService(hostingEnvironment);
        documentStream = service.EmployeeReport(documentType, "View Template");
        await JS.SaveAs("EmployeesReportDemo.doc", documentStream.ToArray());
    }
}